home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 8 / Eagles_Nest_Mac_Collection_Disc_8.TOAST / Developer Tools⁄Additions / InsideBa1994 / InsideBasic-94 / IB 94 / File2TE / File2TE.BAS next >
Encoding:
BASIC Source File  |  1992-07-30  |  2.5 KB  |  75 lines  |  [TEXT/ZBAS]

  1.  
  2. DIM EdT,EdL,EdB,EdR               ' an edit field rectangle
  3. EdT = 20 : EdL = 20 : EdB = 150 : EdR = 200
  4.  
  5. DIM FrT,FrL,FrB,FrR               ' rect for edit field frame
  6.  
  7. BLOCKMOVE VARPTR(EdT),VARPTR(FrT),8' copy data
  8. CALL INSETRECT(FrT,-1,-1)         ' bump it out a little
  9.  
  10. DIM 80 MyTxt$
  11. MyTxt$ = "•• This is text that is from a ZBasic string."
  12.  
  13. COORDINATE WINDOW
  14. WINDOW 1
  15. AUTOCLIP = _False
  16. TEXT 3,9                          ' Geneva 9 pt
  17.  
  18. TEHndl& = FN TENEW(EdT,EdT)       ' veiw and destination rect equal
  19. CALL TEACTIVATE(TEHndl&)
  20.  
  21. IF TEHndl& = 0 THEN STOP          ' avoid bombs - TE is unforgiving
  22.  
  23. test$ = FILES$(1,"TEXT",,volRef)
  24. OPEN "I",1,"Test File1",1,volRef  ' now get file data
  25. FLen& = LOF(1)                    ' find length of file
  26. Hndl& = FN NEWHANDLE(FLen&)       ' get RAM from memory mgr
  27. LONG IF Hndl& <> 0                ' if it is non-zero, we're okay.
  28.   OSErr = FN HLOCK(Hndl&)
  29.   Addr& = PEEK LONG (Hndl&)       ' derive address
  30.   READ FILE 1,Addr&,FLen&         ' get data
  31.   CLOSE 1                         ' close file (should really ck ERROR)
  32.   FLen = FLen&                    ' TE needs integers, not longs
  33.   CALL TESETTEXT(Addr&,FLen,TEHndl&)' put text into edit field
  34.   OSErr = FN DISPOSHANDLE(Hndl&)  ' kill original copy of text data
  35.   
  36.   CALL TESETSELECT(FLen,FLen,TEHndl&)' put cursor at end
  37.   
  38.   StrAddr& = VARPTR(MyTxt$) + 1   ' find address of ZBasic string
  39.   CALL TEINSERT(StrAddr&,LEN(MyTxt$),TEHndl&)' put string into field
  40.   'CALL TECALTEXT(TEHndl&)
  41.   TELen = PEEK WORD(PEEK LONG(TEHndl&)+60)' find new length
  42.   CALL TESETSELECT(TELen,TELen,TEHndl&)' put cursor at end again
  43.   
  44.   OPEN "I",1,"Test File2",1,volRef' open second data file
  45.   FLen& = LOF(1)                  ' get length of text data
  46.   Hndl& = FN NEWHANDLE(FLen&)     ' get space
  47.   LONG IF Hndl& <> 0              ' check for nil handle
  48.     OSErr = FN HLOCK(Hndl&)
  49.     Addr& = PEEK LONG(Hndl&)
  50.     READ FILE 1,Addr&,FLen&
  51.     CLOSE 1
  52.     FLen = FLen&
  53.     CALL TEINSERT(Addr&,FLen,TEHndl&)' note this is TEINSERT, not SETTEXT
  54.     OSErr = FN DISPOSHANDLE(Hndl&)' release original 
  55.     CALL TESETSELECT(0,0,TEHndl&)' put cursor at beginning
  56.     'CALL TECALTEXT(TEHndl&)
  57.     CALL TEUPDATE (EdT,TEHndl&)   ' show field contents now
  58.     CALL FRAMERECT(FrT)           ' and frame it
  59.     PRINT%(10,200);"Press any key to end..."
  60.     DO
  61.     UNTIL LEN(INKEY$)
  62.   XELSE
  63.     GOSUB "OOM"
  64.   END IF
  65. XELSE
  66.   GOSUB "OOM"                     ' memory error
  67. END IF
  68.  
  69. IF TEHndl& <> 0 THEN CALL TEDISPOSE(TEHndl&)
  70. END
  71.  
  72. "OOM"
  73. PRINT%(10,200);"Memory error!"
  74. RETURN
  75.